# 将一个给定字符串根据给定的行数，以从上往下、从左到右进行 Z 字形排列。
# 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时，排列如下：
# L   C   I   R
# E T O E S I I G
# E   D   H   N
# 之后，你的输出需要从左往右逐行读取，产生出一个新的字符串，比如："LCIRETOESIIGEDHN"。


def convert(s, numRows):
    if numRows == 1:
        return s
    dic_s = {}
    for i in range(1, numRows + 1):
        dic_s[i] = []
    for index, string in enumerate(s):
        num = index % (2 * numRows - 2)
        if num <= numRows - 1:
            num_line = num + 1
        else:
            num_line = 2 * numRows - 1 - num
        num_space = numRows - 2 - (index % (numRows  - 1))
        dic_s[num_line].append(string)
        dic_s[num_line].append(" " * num_space)
    res = ""
    for lists in dic_s:
        dic_s[lists] = "".join(dic_s[lists])
        res = res + dic_s[lists]
    res = res.split()
    return "".join(res)


print(convert("LEETCODEISHIRING", 1))
